﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BussinesCosea;
using System.Configuration;
using System.IO;
using System.Data.SqlClient;
using System.Data;

public partial class Reporteador : System.Web.UI.Page
{
    private static AppSettingsReader settings = new AppSettingsReader();
    string cadena = (string)settings.GetValue("Conexion2", typeof(string));
    //private static List<CamposReporte> listaCampos = new List<CamposReporte>();
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack == false)
        {
            CargaCombos();
            //listaCampos.Clear();
            lResultado.Text = string.Empty;
        }
    }

    private void CargaCombos()
    {
        try
        {
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {

                ddCampos.DataSource = c.ObtenCamposReporteador();
                ddCampos.DataTextField = "Descripcion";
                ddCampos.DataValueField = "Campo";                
                ddCampos.DataBind();

                EstadoEmpleado.DataSource = c.ObtenBusquedaEstadoEmpleado();
                EstadoEmpleado.DataTextField = "Estado";
                EstadoEmpleado.DataValueField = "IdEstadoEmpleado";
                EstadoEmpleado.DataBind();
            }


        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }   
    }
    protected void btnAgregar_Click(object sender, EventArgs e)
    {
        ListItem itm = new ListItem(ddCampos.SelectedItem.Text.Trim(), ddCampos.SelectedItem.Value.Trim());
        lstCampos.Items.Add(itm);
        //lstCampos.Items.Add(ddCampos.SelectedItem.Text.Trim());        
        //CamposReporte cReport = new CamposReporte(ddCampos.SelectedItem.Value.Trim(), ddCampos.SelectedItem.Text.Trim());
        //listaCampos.Add(cReport);
    }
    protected void btnGenerar_Click(object sender, EventArgs e)
    {
        if (lstCampos.Items.Count == 0)        
            return;
        
        try
        {
            List<CamposReporte> listaCampos = new List<CamposReporte>();
            //listaCampos.Clear();
            foreach (ListItem item in lstCampos.Items)
            {
                CamposReporte cReport = new CamposReporte(item.Value, item.Text);
                listaCampos.Add(cReport);
            }

            DataTable dt;
            using (BussinesCosea.CoseaDirectos c = new BussinesCosea.CoseaDirectos(cadena))
            {
                string sFiltros = " where e.IdEstadoEmpleado = " + EstadoEmpleado.SelectedItem.Value;
                string sFechas = " and e.FechaIngreso >= '{0}' AND e.FechaIngreso <= '{1}'";
                string sUbicacion = " and ec.Localizacion = '{0}'";

                int iCuantosRegs = 0;
                if (rdoPrimeros.Checked)
                {
                    if (!int.TryParse(txtRegs.Text, out iCuantosRegs))
                        iCuantosRegs = 10;
                }
                if(rdoTodos.Checked)
                    iCuantosRegs = 0;
                if (rdoFechas.Checked)
                    sFechas = string.Format(sFechas, fechaIni.Text, fechaFin.Text);
                if(!rdoFechas.Checked)
                    sFechas = "";
                if (rdoUbicacion.Checked)
                    sUbicacion = string.Format(sUbicacion, txtUbicacion.Text);
                if (!rdoUbicacion.Checked)
                    sUbicacion = "";
                if (EstadoEmpleado.SelectedItem.Value == "6")
                {
                    sFiltros = "";
                    sFechas = "";
                    sUbicacion = "";
                }
                
                dt = c.ResultadoReporte(listaCampos,sFiltros,iCuantosRegs,sFechas,sUbicacion).Tables[0];
            }

            if (dt.Rows.Count > 0)
            {
                string strResultado = "<table border=1 cellspacing=0 cellpadding=2 bordercolor='666633'> <tr>";
                foreach (CamposReporte item in listaCampos)
                {
                    strResultado += "<td><b>" + item.Descripcion1 + "</b></td>";
                }
                strResultado += "</tr>";
                foreach (DataRow item in dt.Rows)
                {
                    strResultado += "<tr>";
                    int iCampo = 0;
                    foreach (CamposReporte item2 in listaCampos)
                    {
                        strResultado += "<td>" + item[iCampo] + "</td>";
                        iCampo++;
                    }

                    strResultado += "</tr>";
                }
                strResultado += "</table>";
                //Response.Redirect("ResultadoReporte.aspx?res=" + strResultado);
                lResultado.Text = strResultado;
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("Error.aspx?error=" + ex.Message);
        }  
    }
    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        lstCampos.Items.Clear();
        //listaCampos.Clear();
        lResultado.Text = string.Empty;
        fechaIni.Text = string.Empty;
        fechaFin.Text = string.Empty;
        rdoFechas.Checked = false;
        rdoUbicacion.Checked = false;
        txtRegs.Text = "10";
        rdoPrimeros.Checked = true;
        txtUbicacion.Text = string.Empty;
    }
    protected void btnQuitar_Click(object sender, EventArgs e)
    {
        while (lstCampos.SelectedIndex != -1)        {

            lstCampos.Items.RemoveAt(lstCampos.SelectedIndex);
        }
    }

}

